package com.demo.java.OD101_150.OD121;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【执行时长】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145716390
 */
public class OdMain {
    // 解决任务处理问题的核心函数
    private static void solve(int maxTaskNumber, int allTaskSize, String[] tasks) {
        // 初始化剩余任务数量
        int remainingTasks = 0;

        // 遍历所有任务，计算任务的处理情况
        for (int j = 0; j < allTaskSize; ++j) {
            // 将任务数值从字符串转换为整数
            int taskValue = Integer.parseInt(tasks[j]);

            // 输入验证：任务数必须在 1 到 10000 之间
            if (taskValue < 1 || taskValue > 10000) {
                System.out.println("input error");
                return;
            }

            // 计算剩余任务数量
            remainingTasks = Math.max(0, remainingTasks + taskValue - maxTaskNumber);
        }

        // 计算最少执行时间
        int result = allTaskSize;
        // 如果剩余任务数无法整除最大任务数，则需要额外的一次处理时间
        if (remainingTasks % maxTaskNumber != 0) {
            result += remainingTasks / maxTaskNumber + 1;
        } else {
            // 如果剩余任务数可以整除最大任务数，则不需要额外时间
            result += remainingTasks / maxTaskNumber;
        }

        // 输出结果：最少执行时间
        System.out.println(result);
    }

    public static void main(String[] args) {
        try {
            Scanner scan = new Scanner(System.in);

            // 读取最大任务数，每次最多处理的任务数量
            int maxTaskNumber = Integer.parseInt(scan.nextLine());
            // 输入验证：最大任务数必须在 1 到 10000 之间
            if (maxTaskNumber < 1 || maxTaskNumber > 10000) {
                System.out.println("input error");
                return;
            }

            // 读取任务总数，即任务的数量
            int allTaskSize = Integer.parseInt(scan.nextLine());
            // 输入验证：任务总数必须在 1 到 10000 之间
            if (allTaskSize < 1 || allTaskSize > 10000) {
                System.out.println("input error");
                return;
            }

            // 读取任务数组，任务数量的列表
            String[] tasks = scan.nextLine().split(" ");
            // 调用核心函数来计算最少执行时间
            solve(maxTaskNumber, allTaskSize, tasks);
        } catch (Exception e) {
            // 如果发生任何异常（例如输入格式错误），则输出错误信息
            System.out.println("input error");
        }
    }
}